#!/usr/bin/env python3
"""
Redis MCP 系统主入口 - 简化版本
基于官方MCP SDK的Redis工具集
"""
import sys
import subprocess
from pathlib import Path

import typer
from rich.console import Console
from rich.table import Table
from rich.panel import Panel

# 创建 Typer 应用
app = typer.Typer(
    name="redis-mcp",
    help="Redis Model Context Protocol 系统 - 基于官方SDK",
    add_completion=False
)

# 创建 Rich 控制台
console = Console()


@app.command()
def server():
    """启动Redis MCP服务器（基于官方SDK）"""
    console.print(Panel.fit("🚀 启动 Redis MCP 服务器", style="bold green"))
    
    try:
        # 直接运行新的服务器
        subprocess.run([sys.executable, "redis_mcp_server.py"], check=True)
    except KeyboardInterrupt:
        console.print("\n⏹️ 服务器已停止", style="yellow")
    except subprocess.CalledProcessError as e:
        console.print(f"❌ 服务器启动失败: {e}", style="red")
    except FileNotFoundError:
        console.print("❌ 找不到 redis_mcp_server.py 文件", style="red")


@app.command()
def dev():
    """使用MCP Inspector开发模式启动服务器"""
    console.print(Panel.fit("🔍 启动 MCP Inspector 开发模式", style="bold blue"))
    
    try:
        # 使用官方MCP开发工具
        subprocess.run(["mcp", "dev", "redis_mcp_server.py"], check=True)
    except KeyboardInterrupt:
        console.print("\n⏹️ 开发服务器已停止", style="yellow")
    except subprocess.CalledProcessError as e:
        console.print(f"❌ 开发服务器启动失败: {e}", style="red")
    except FileNotFoundError:
        console.print("❌ 找不到 mcp 命令，请安装: pip install 'mcp[cli]'", style="red")


@app.command()
def install():
    """安装到Claude Desktop"""
    console.print(Panel.fit("📦 安装到 Claude Desktop", style="bold magenta"))
    
    try:
        # 使用官方MCP安装工具
        subprocess.run(["mcp", "install", "redis_mcp_server.py"], check=True)
        console.print("✅ 成功安装到 Claude Desktop", style="green")
    except subprocess.CalledProcessError as e:
        console.print(f"❌ 安装失败: {e}", style="red")
    except FileNotFoundError:
        console.print("❌ 找不到 mcp 命令，请安装: pip install 'mcp[cli]'", style="red")


@app.command()
def config():
    """生成Cursor配置"""
    console.print(Panel.fit("⚙️ 生成 Cursor 配置", style="bold cyan"))
    
    try:
        # 运行配置生成器
        subprocess.run([sys.executable, "generate_cursor_config.py"], check=True)
    except subprocess.CalledProcessError as e:
        console.print(f"❌ 配置生成失败: {e}", style="red")
    except FileNotFoundError:
        console.print("❌ 找不到 generate_cursor_config.py 文件", style="red")


@app.command()
def test():
    """测试Redis连接和MCP服务器"""
    console.print(Panel.fit("🧪 测试 Redis MCP 系统", style="bold yellow"))
    
    # 测试Redis连接
    console.print("1. 测试Redis连接...")
    try:
        import redis
        r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
        r.ping()
        console.print("   ✅ Redis连接成功", style="green")
    except Exception as e:
        console.print(f"   ❌ Redis连接失败: {e}", style="red")
        console.print("   💡 请启动Redis服务器: docker run -d --name redis-mcp -p 6379:6379 redis:latest", style="blue")
    
    # 测试MCP SDK
    console.print("2. 测试MCP SDK...")
    try:
        import mcp
        console.print("   ✅ MCP SDK已安装", style="green")
    except ImportError:
        console.print("   ❌ MCP SDK未安装", style="red")
        console.print("   💡 请安装: pip install 'mcp[cli]'", style="blue")
    
    # 测试服务器文件
    console.print("3. 测试服务器文件...")
    if Path("redis_mcp_server.py").exists():
        console.print("   ✅ redis_mcp_server.py 存在", style="green")
    else:
        console.print("   ❌ redis_mcp_server.py 不存在", style="red")
    
    # 测试Cursor配置
    console.print("4. 测试Cursor配置...")
    if Path(".cursor/mcp.json").exists():
        console.print("   ✅ Cursor配置文件存在", style="green")
    else:
        console.print("   ❌ Cursor配置文件不存在", style="red")
        console.print("   💡 请运行: python main.py config", style="blue")


@app.command()
def info():
    """显示系统信息"""
    console.print(Panel.fit("ℹ️ Redis MCP 系统信息", style="bold white"))
    
    # 创建信息表格
    table = Table(title="系统组件状态")
    table.add_column("组件", style="cyan", no_wrap=True)
    table.add_column("状态", style="magenta")
    table.add_column("描述", style="green")
    
    # 检查各个组件
    components = [
        ("Redis MCP Server", "redis_mcp_server.py", "基于官方SDK的MCP服务器"),
        ("Cursor配置", ".cursor/mcp.json", "Cursor IDE的MCP配置"),
        ("批处理启动器", "start_redis_mcp.bat", "Windows批处理启动文件"),
        ("配置生成器", "generate_cursor_config.py", "自动生成Cursor配置"),
        ("故障排除指南", "Cursor黄色状态解决方案.md", "详细的故障排除文档")
    ]
    
    for name, file_path, description in components:
        if Path(file_path).exists():
            status = "✅ 存在"
        else:
            status = "❌ 缺失"
        table.add_row(name, status, description)
    
    console.print(table)
    
    # 显示使用指南
    console.print("\n📋 使用指南:")
    console.print("1. 启动开发服务器: python main.py dev")
    console.print("2. 生成Cursor配置: python main.py config")
    console.print("3. 测试系统: python main.py test")
    console.print("4. 安装到Claude: python main.py install")


# 演示功能已移除


if __name__ == "__main__":
    app()
